﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RFMS;

namespace BU
{
    public class SubCategorie
    {
        public string Naam { get; set; }

        private ModelRFMSContainer _container;
        public SubCategorie()
        {
            _container = ModelRFMSContainer.GetInstance();
        }

        public void Toevoegen(string naam, string categorieNaam)
        {
            var subcategorie = new RFMS.SubCategorie();
            subcategorie.Naam = naam;
            subcategorie.Actief = true;
            subcategorie.Categorie = CategorieId(categorieNaam);
            _container.SubCategorieSet.AddObject(subcategorie);
            _container.SaveChanges();
        }

        public void SubCategorieActiveren(string naam, bool waarde)
        {
            var subcategorie = _container.SubCategorieSet.FirstOrDefault(p => p.Naam == naam);
            subcategorie.Actief = waarde;
            _container.SaveChanges();
        }

        public void Verwijderen(string naam)
        {
            try
            {
                var subcategorie = _container.SubCategorieSet.FirstOrDefault(p => p.Naam == naam);
                subcategorie.Actief = false;
                _container.SaveChanges();
            }
            catch (Exception)
            {
                
            }
        }

        private RFMS.Categorie CategorieId(string categorie)
        {
            RFMS.Categorie cat = new RFMS.Categorie();

            var test = from t in _container.CategorieSet
                       where t.Naam == categorie && t.Actief == true
                       select t;
            foreach (var text in test)
            {
                cat = text;
            }
            return cat;
        }

        public void Aanpassen(string naam, string nieuweNaam, string categorie)
        {
            var subcategorie = _container.SubCategorieSet.FirstOrDefault(p => p.Naam == naam);
            if(nieuweNaam != "")
            {
                subcategorie.Naam = nieuweNaam;
            }
            if(categorie != "")
            {
                RFMS.Categorie cat = CategorieId(categorie);
                subcategorie.Categorie = cat;
            }
            
            _container.SaveChanges();
        }

        public List<List<string>> LijstVanSubcategorieen(string categorie)
        {
            List<List<string>> lijst = new List<List<string>>();

            var sub = from t in _container.SubCategorieSet
                       where t.Categorie.Naam == categorie && t.Actief == true
                       select t;
            foreach (var s in sub)
            {
                lijst.Add(new List<string>{s.SubCategorieId.ToString(),s.Naam, s.Categorie.Naam});
            }

            return lijst;
        }

        public List<List<string>> LijstVanSubcategorieen()
        {
            List<List<string>> lijst = new List<List<string>>();

            var sub = from t in _container.SubCategorieSet
                      where t.Actief == true
                      select t;
            foreach (var s in sub)
            {
                lijst.Add(new List<string> { s.SubCategorieId.ToString(), s.Naam, s.Categorie.Naam });
            }

            return lijst;
        }

        public List<List<string>> LijstVanAlleSubCategorieen()
        {
            var subCategorieen = from c in _container.SubCategorieSet
                              select c;

            var lijst = new List<List<string>>();

            foreach (var cat in subCategorieen)
            {
                lijst.Add(new List<string> { cat.SubCategorieId.ToString(), cat.Naam, cat.Actief.ToString() });
            }

            return lijst;
        }
    }
}
